/**
 * 安全地获取 localStorage 中的指定键值。
 * @param {string} key 键名
 * @returns {string|boolean} 如果存在且有效则返回字符串，否则返回 false。
 */
function getStorageItem(key: string): string | boolean {
  try {
    const value = localStorage.getItem(key);
    return typeof value === "string" && value !== "" ? value : false;
  } catch (e) {
    console.warn(`Failed to get item "${key}" from localStorage`, e);
    return false;
  }
}

/**
 * 安全地移除 localStorage 中的指定键值。
 * @param {string} key 键名
 * @returns {boolean} 移除成功返回 true，不存在或失败返回 false。
 */
function removeStorageItem(key: string): boolean {
  try {
    if (localStorage.getItem(key)) {
      localStorage.removeItem(key);
      return true;
    }
    return false;
  } catch (e) {
    console.warn(`Failed to remove item "${key}" from localStorage`, e);
    return false;
  }
}

/**
 * 获取存储的用户令牌（token）。
 * @returns {string|boolean} 如果存在token则返回token字符串，否则返回false。
 */
export function getToken(): string | boolean {
  return getStorageItem("token");
}

/**
 * 移除存储的用户令牌（token）。
 * @returns {boolean} 移除成功则返回true，如果不存在token则返回false。
 */
export function removeToken(): boolean {
  return removeStorageItem("token");
}

/**
 * 获取存储的用户数据。
 * @returns {string|boolean} 如果存在userData则返回userData字符串，否则返回false。
 */
export function getUser(): string | boolean {
  return getStorageItem("userData");
}

/**
 * 移除存储的用户数据。
 * @returns {boolean} 移除成功则返回true，如果不存在userData则返回false。
 */
export function removeUser(): boolean {
  return removeStorageItem("userData");
}
